package net.guerlab.sdk.anubis.entity;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * 取消信息
 * 
 * @author guer
 *
 */
public class CancelInfo {

    /**
     * 商户订单号
     */
    @JsonProperty("partner_order_code")
    private String partnerOrderCode;

    /**
     * 订单取消原因代码
     * <ul>
     * <li>2:商家取消</li>
     * </ul>
     */
    @JsonProperty("order_cancel_reason_code")
    private int orderCancelReasonCode;

    /**
     * 订单取消编码
     * <ul>
     * <li>0:其他</li>
     * <li>1:联系不上商户</li>
     * <li>2:商品已经售完</li>
     * <li>3:用户申请取消</li>
     * <li>4:运力告知不配送 让取消订单</li>
     * <li>5:订单长时间未分配</li>
     * <li>6:接单后骑手未取件</li>
     * </ul>
     */
    @JsonProperty("order_cancel_code")
    private int orderCancelCode;

    /**
     * 订单取消描述（order_cancel_code为0时必填）
     */
    @JsonProperty("order_cancel_description")
    private String orderCancelDescription;

    /**
     * 订单取消时间（毫秒）
     */
    @JsonProperty("order_cancel_time")
    private long orderCancelTime;

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("CancelInfo [partnerOrderCode=");
        builder.append(partnerOrderCode);
        builder.append(", orderCancelReasonCode=");
        builder.append(orderCancelReasonCode);
        builder.append(", orderCancelCode=");
        builder.append(orderCancelCode);
        builder.append(", orderCancelDescription=");
        builder.append(orderCancelDescription);
        builder.append(", orderCancelTime=");
        builder.append(orderCancelTime);
        builder.append("]");
        return builder.toString();
    }

    /**
     * 返回 商户订单号
     *
     * @return 商户订单号
     */
    public String getPartnerOrderCode() {
        return partnerOrderCode;
    }

    /**
     * 设置商户订单号
     *
     * @param partnerOrderCode
     *            商户订单号
     */
    public void setPartnerOrderCode(
            String partnerOrderCode) {
        this.partnerOrderCode = partnerOrderCode;
    }

    /**
     * 返回 订单取消原因代码
     * <ul>
     * <li>2:商家取消</li>
     * </ul>
     *
     * @return 订单取消原因代码
     */
    public int getOrderCancelReasonCode() {
        return orderCancelReasonCode;
    }

    /**
     * 设置订单取消原因代码
     * <ul>
     * <li>2:商家取消</li>
     * </ul>
     *
     * @param orderCancelReasonCode
     *            订单取消原因代码
     */
    public void setOrderCancelReasonCode(
            int orderCancelReasonCode) {
        this.orderCancelReasonCode = orderCancelReasonCode;
    }

    /**
     * 返回 订单取消编码
     * <ul>
     * <li>0:其他</li>
     * <li>1:联系不上商户</li>
     * <li>2:商品已经售完</li>
     * <li>3:用户申请取消</li>
     * <li>4:运力告知不配送 让取消订单</li>
     * <li>5:订单长时间未分配</li>
     * <li>6:接单后骑手未取件</li>
     * </ul>
     *
     * @return 订单取消编码
     */
    public int getOrderCancelCode() {
        return orderCancelCode;
    }

    /**
     * 设置订单取消编码
     * <ul>
     * <li>0:其他</li>
     * <li>1:联系不上商户</li>
     * <li>2:商品已经售完</li>
     * <li>3:用户申请取消</li>
     * <li>4:运力告知不配送 让取消订单</li>
     * <li>5:订单长时间未分配</li>
     * <li>6:接单后骑手未取件</li>
     * </ul>
     *
     * @param orderCancelCode
     *            订单取消编码
     */
    public void setOrderCancelCode(
            int orderCancelCode) {
        this.orderCancelCode = orderCancelCode;
    }

    /**
     * 返回 订单取消描述（order_cancel_code为0时必填）
     *
     * @return 订单取消描述
     */
    public String getOrderCancelDescription() {
        return orderCancelDescription;
    }

    /**
     * 设置订单取消描述（order_cancel_code为0时必填）
     *
     * @param orderCancelDescription
     *            订单取消描述
     */
    public void setOrderCancelDescription(
            String orderCancelDescription) {
        this.orderCancelDescription = orderCancelDescription;
    }

    /**
     * 返回 订单取消时间（毫秒）
     *
     * @return 订单取消时间
     */
    public long getOrderCancelTime() {
        return orderCancelTime;
    }

    /**
     * 设置订单取消时间（毫秒）
     *
     * @param orderCancelTime
     *            订单取消时间
     */
    public void setOrderCancelTime(
            long orderCancelTime) {
        this.orderCancelTime = orderCancelTime;
    }
}
